#include <stdio.h>
#include <stdlib.h>

#include "merge.h"

/*
 * ████████ 算法2.12 ████████
 *
 * 非递减链表归并：C=A+B
 *
 * 将链表A和B归并为C，且保持元素相对位置不变。
 * Lc利用La的头结点，Lb中结点均插入新链表Lc中。
 */
Status MergeList(LinkList La,LinkList Lb,LinkList *Lc)
{
    LinkList pa,pb,pc;
    
    pa = La->next;
    pb = Lb->next;
    (*Lc) = La;

    pc = (*Lc);

    while (pa != NULL && pb != NULL)
    {
        if (pa->elem >= pb->elem )
        {
            pc->next = pa;
            pc = pc->next;
            pa = pa->next;
        }else{
            pc->next = pb;
            pc = pc->next;

            pb = pb->next;
        }
    }

    pc->next = pa==NULL?pb:pa;

    free(pb);
    return OK;   
}